/**
 * sessionStorage封装
 * sessionStorage生命周期为当前窗口或标签页，一旦窗口或标签页被永久关闭了，
 * 那么所有通过sessionStorage存储的数据也就被清空了
 *
 * 不同浏览器无法共享localStorage或sessionStorage中的信息。
 * 相同浏览器的不同页面间可以共享相同的 localStorage（页面属于相同域名和端口），
 * 但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是，页面及标 签页仅指顶级窗口，
 * 如果一个标签页包含多个iframe标签且他们属于同源页面，那么他们之间是可以共享sessionStorage的
 */

// 使用方法
// 1.引入工具storage
// import storage from './storage/index'
// 2.使用
// //设置一个key，value
// //   storage.setItem('a',1)
// //设置一个key，对象value
// //   storage.setItem('user', {a:1})
// //设置一个key和对象value 并保存在user模块下面
// //   storage.setItem('abc', {a:1},"user")

const  STORAGE_KEY = 'mall';
export default{
  // 存储值
  setItem(key,value,module_name){
    if (module_name){
      let val = this.getItem(module_name);
      val[key] = value;
      this.setItem(module_name, val);
    }else{
      let val = this.getStorage();
      val[key] = value;
      window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val));
    }
  },
  // 获取某一个模块下面的属性user下面的userName
  getItem(key,module_name){
    if (module_name){
      let val = this.getItem(module_name);
      if(val) return val[key];
    }
    return this.getStorage()[key];
  },
  getStorage(){
    return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) || '{}');
  },
  clear(key, module_name){
    let val = this.getStorage();
    if (module_name){
      if (!val[module_name])return;
      delete val[module_name][key];
    }else{
      delete val[key];
    }
    window.sessionStorage.setItem(STORAGE_KEY, JSON.stringify(val));
  }
}
